java.lang.Process ক্লাস Java-তে সিস্টেম প্রক্রিয়া পরিচালনা করার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি বাইরের সিস্টেম প্রোগ্রাম বা কমান্ড চালাতে পারেন এবং সেই প্রোগ্রাম বা কমান্ডের আউটপুট এবং এক্সিট স্ট্যাটাস গ্রহণ করতে পারেন। Process ক্লাসটি Java ProcessBuilder এবং Runtime ক্লাসের মাধ্যমে সিস্টেম কমান্ড এক্সিকিউট করতে ব্যবহৃত হয়।
Process ক্লাস:
Process ক্লাস Java অ্যাপ্লিকেশন থেকে এক্সটার্নাল প্রোগ্রাম বা কমান্ড চালানোর জন্য ব্যবহৃত হয়। এটি আপনি ProcessBuilder অথবা Runtime.getRuntime().exec() মেথডের মাধ্যমে কল করতে পারেন। এই ক্লাসটি বাইরের প্রোগ্রাম থেকে ইনপুট, আউটপুট এবং ত্রুটি স্ট্রিম পরিচালনার সুযোগ দেয়।
Process এর মাধ্যমে Output এবং Exit Status হ্যান্ডল করা:
- Output Handling (স্ট্যান্ডার্ড আউটপুট):
- বাইরের প্রোগ্রাম চালানোর পর আপনি প্রোগ্রামটির আউটপুট ক্যাপচার করতে পারবেন। এর জন্য আপনি
Process.getInputStream()মেথড ব্যবহার করতে পারেন। - আউটপুট স্ট্রিমের মাধ্যমে প্রাপ্ত ডেটা
InputStreamReaderএবংBufferedReaderব্যবহার করে পড়া যায়।
- বাইরের প্রোগ্রাম চালানোর পর আপনি প্রোগ্রামটির আউটপুট ক্যাপচার করতে পারবেন। এর জন্য আপনি
- Exit Status Handling (Exit Code):
- সিস্টেম প্রোগ্রাম বা কমান্ড চালানোর পর,
Process.exitValue()মেথডটি প্রক্রিয়ার এক্সিট স্ট্যাটাস বা exit code প্রদান করে। - Exit code 0 সাধারণত সফল কার্যক্রমের জন্য ব্যবহৃত হয়, এবং অন্য কোডগুলি ত্রুটির নির্দেশ দেয়।
- সিস্টেম প্রোগ্রাম বা কমান্ড চালানোর পর,
Process থেকে Output এবং Exit Status হ্যান্ডল করার উদাহরণ:
এখানে আমরা একটি প্রক্রিয়া চালাবো (উদাহরণস্বরূপ dir কমান্ড উইন্ডোজের জন্য বা ls কমান্ড লিনাক্সের জন্য) এবং তার আউটপুট এবং এক্সিট স্ট্যাটাস হ্যান্ডল করবো।
উদাহরণ 1: ProcessBuilder ব্যবহার করে (Windows Command dir):
import java.io.*;
public class ProcessExample {
public static void main(String[] args) {
try {
// Windows এর জন্য ProcessBuilder ব্যবহার করে 'dir' কমান্ড চালানো
ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "dir");
processBuilder.redirectErrorStream(true); // Error এবং Output একই স্ট্রিমে পাঠানো হবে
// প্রক্রিয়া চালানো
Process process = processBuilder.start();
// Output Stream থেকে আউটপুট পড়ে নেয়া
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line); // আউটপুট প্রিন্ট করা
}
// Exit Status বা Exit Code পাওয়া
int exitCode = process.waitFor();
System.out.println("Process Exit Status: " + exitCode); // Exit Status (0 indicates success)
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
উদাহরণ 2: ProcessBuilder ব্যবহার করে (Linux Command ls):
import java.io.*;
public class ProcessExampleLinux {
public static void main(String[] args) {
try {
// Linux এর জন্য ProcessBuilder ব্যবহার করে 'ls' কমান্ড চালানো
ProcessBuilder processBuilder = new ProcessBuilder("ls", "-l");
processBuilder.redirectErrorStream(true); // Error এবং Output একই স্ট্রিমে পাঠানো হবে
// প্রক্রিয়া চালানো
Process process = processBuilder.start();
// Output Stream থেকে আউটপুট পড়ে নেয়া
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line); // আউটপুট প্রিন্ট করা
}
// Exit Status বা Exit Code পাওয়া
int exitCode = process.waitFor();
System.out.println("Process Exit Status: " + exitCode); // Exit Status (0 indicates success)
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
বিষয়গুলির ব্যাখ্যা:
- ProcessBuilder:
ProcessBuilderক্লাসটি বাহ্যিক প্রোগ্রাম বা কমান্ড চালানোর জন্য ব্যবহৃত হয়। এটি প্রক্রিয়া তৈরি করতে এবং সেই প্রক্রিয়াটির ইনপুট, আউটপুট, এবং ত্রুটি স্ট্রিম পরিচালনা করতে ব্যবহৃত হয়।redirectErrorStream(true)ব্যবহার করে ত্রুটির স্ট্রিম এবং আউটপুট স্ট্রিম একত্রিত করা যায়।
- getInputStream():
- এই মেথডটি প্রক্রিয়ার আউটপুট স্ট্রিম প্রদান করে। আমরা এই স্ট্রিমটি ব্যবহার করে বাহ্যিক প্রোগ্রামের আউটপুট পেতে পারি।
- waitFor():
waitFor()মেথডটি প্রক্রিয়ার এক্সিট স্ট্যাটাস প্রদান করে। এটি থ্রেডটি ব্লক করে যতক্ষণ না প্রক্রিয়া শেষ হয় এবং প্রক্রিয়ার এক্সিট কোড প্রদান করে।
- Exit Code:
- প্রোগ্রামটি সফলভাবে শেষ হলে,
exitValue()মেথডটি 0 রিটার্ন করে, এবং যদি কোনও ত্রুটি ঘটে, তবে এটি অন্য কোড রিটার্ন করে (যেমন 1, 2 ইত্যাদি)।
- প্রোগ্রামটি সফলভাবে শেষ হলে,
Exit Status Code:
- Exit code 0: কমান্ড সফলভাবে সম্পন্ন হয়েছে।
- Exit code 1 বা অন্য কোড: সাধারণত ত্রুটি বা ব্যতিক্রম ঘটেছে।
সামগ্রিকভাবে:
- Process ক্লাস এবং ProcessBuilder Java তে বাহ্যিক প্রোগ্রাম বা সিস্টেম কমান্ড চালানোর জন্য খুবই কার্যকরী। এর মাধ্যমে আপনি প্রক্রিয়ার আউটপুট এবং এক্সিট স্ট্যাটাস সংগ্রহ করতে পারেন, যা সিস্টেম লেভেল কার্যক্রম বা স্ক্রিপ্ট চালানোর জন্য ব্যবহৃত হয়।
Read more